<?php
class System_Plugin_Action_ReduceTileResource extends System_Plugin_Action_Default {

	/**
	 * eindeutige Identifikation der Aktion, wird in der Datenbank als hid abgespeichert
	 * @var string $_hid
	 */
	protected $_hid = 'ReduceTileResource';
	
	/**
	 * Aufgrund dieser Methodenname, wird nach Methoden zur Verarbeitungszeit, zur
	 * Verarbeitungsmenge und Verarbeitungsendresultat gesucht
	 * @var string $_executionMethods
	 */
	protected $_executionMethods = array('Resources');	

	/**
	 * Konstruktor der Klasse System_Plugin_Action_CollectResource
	 * @param none
	 * @return none;
	 */
	public function __construct() {

		// Aktionsdaten vorbereiten
		$this->_prepareActionData();
	}

	/**
	 * Initiale Methode, wenn die Action der Queue hinzugefuegt wird
	 * @param int $tileResourceId Id der TileResource, die abgebaut werden soll
	 * @return object Instanz auf die Klasse System_Plugin_Action_ReduceTileResource
	 */
	public function onInit($tileResourceId) {

		if(empty($tileResourceId)) {
			throw new Exception('beim Initialisieren der Action ReduceTileResource muss eine Resource angegeben werden', 0);
			return false;
		}

		// Event setzen
		$this->_setEventCode(System_Plugin_Action_Default::EVENT_ON_INIT);
		
		// Es wird immer nur eine Resource von einer Kachel abgebaut. Ist immer unter TileResources
		// zu finden
		$mTileResource = new Application_Model_TileResources();
		$dTileResource = $mTileResource->find(array('tile_resources.id = ?' => $tileResourceId));
		$this->setResourceData($dTileResource);

		// die erzeugten Resourcen werden im Lager eingelagert werden, deswegen wird die Id 
		// aus den StorageResources gezogen
		$mStorage		= new Application_Model_StorageResources();
		$dStorage		= $mStorage->findall(array('storage_resources.resources_id = ?' => array_keys($this->_actionData->produce->resources)));		
		
		foreach($dStorage as $dStorageResource) {
			$this->setResourceData($dStorageResource);
		}

		return $this;
	}
}
?>